package com.example.administrator.hqq.base;

/**
 * @name: HQQ
 * @describe:
 * @author: 康海涛 QQ2541849981
 * @time: 2019/1/11 14:17
 * @remark:
 */

import android.content.Context;
import android.view.View;

import com.blankj.utilcode.util.SPUtils;
import com.example.administrator.hqq.bean.Complain;
import com.example.administrator.hqq.config.LoongsConfig;
import com.example.administrator.hqq.config.UrlFactory;
import com.example.administrator.hqq.utils.HintWordsUtils;
import com.zhy.http.okhttp.OkHttpUtils;
import com.zhy.http.okhttp.callback.StringCallback;

import org.greenrobot.eventbus.EventBus;
import org.json.JSONException;
import org.json.JSONObject;

import io.rong.imkit.RongIM;
import io.rong.imlib.model.Conversation;
import io.rong.imlib.model.Message;
import io.rong.imlib.model.UserInfo;
import okhttp3.Call;

public class MyConversationClickListener implements RongIM.ConversationClickListener {

    /**
     * 当点击用户头像后执行。
     * @param context          上下文。
     * @param conversationType 会话类型。
     * @param user             被点击的用户的信息。
     * @param targetId         会话 id
     * @return 如果用户自己处理了点击后的逻辑处理，则返回 true，否则返回 false，false 走融云默认处理方式。
     */
    @Override
    public boolean onUserPortraitClick(Context context, Conversation.ConversationType conversationType, UserInfo user, String targetId) {
        switch (conversationType){
            case NONE:
                break;
            case PRIVATE:
                break;
            case DISCUSSION:
                break;
            case GROUP:
                addDirectchat(context,user.getUserId(),targetId);
                break;
            case CHATROOM:
                break;
            case CUSTOMER_SERVICE:
                break;
            case SYSTEM:
                break;
            case APP_PUBLIC_SERVICE:
                break;
            case PUBLIC_SERVICE:
                break;
            case PUSH_SERVICE:
                break;
        }
        return true;
    }

    /**
     * 当长按用户头像后执行。
     *
     * @param context          上下文。
     * @param conversationType 会话类型。
     * @param user             被点击的用户的信息。
     * @param targetId         会话 id
     * @return 如果用户自己处理了点击后的逻辑处理，则返回 true，否则返回 false，false 走融云默认处理方式。
     */
    @Override
    public boolean onUserPortraitLongClick(Context context, Conversation.ConversationType conversationType, UserInfo user, String targetId) {
        return false;
    }

    /**
     * 当点击消息时执行。
     *
     * @param context 上下文。
     * @param view    触发点击的 View。
     * @param message 被点击的消息的实体信息。
     * @return 如果用户自己处理了点击后的逻辑处理，则返回 true， 否则返回 false, false 走融云默认处理方式。
     */
    @Override
    public boolean onMessageClick(Context context, View view, Message message) {
        return false;
    }

    /**
     * 创建私聊
     */
    private void addDirectchat(final Context context, final String other_user_id,final String id) {
        if (other_user_id.equals(LoongsConfig.getUser_id()))
        {
            return;
        }
            OkHttpUtils.get().url(UrlFactory.addDirectchat())
                    .addParams(LoongsConfig.user_id,LoongsConfig.getUser_id())
                    .addParams(LoongsConfig.other_user_id,other_user_id)
                    .addParams(LoongsConfig.type,"GROUP")
                    .addParams(LoongsConfig.id,id)
                    .build().execute(new StringCallback() {
                @Override
                public void onError(Call call, Exception e, int id) {
                }

                @Override
                public void onResponse(String response, int id) {
                    try {
                        JSONObject jsonObject = new JSONObject(response);
                        int code = jsonObject.getInt(LoongsConfig.code);
                        String description = jsonObject.getString(LoongsConfig.description);
                        HintWordsUtils.showMarkeWords(code,description);
                        if (code==200){
                            LoongsConfig.getUsersIdSPUtils().put( LoongsConfig.Conversation.ConversationID,other_user_id);
                            SPUtils.getInstance(SPUtils.getInstance().getString(LoongsConfig.user_id)).put(LoongsConfig.Conversation.ChatConversationType, LoongsConfig.Conversation.PRIVATE);
                            RongIM.getInstance().startConversation(context, Conversation.ConversationType.PRIVATE,other_user_id,"");
                            Complain complain = new Complain(Complain.Type.DIRECTCHAT, "");
                            EventBus.getDefault().post(complain);
                        }
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            });
    }
    /**
     * 当点击链接消息时执行。
     *
     * @param context 上下文。
     * @param link    被点击的链接。
     * @param message 被点击的消息的实体信息
     * @return 如果用户自己处理了点击后的逻辑处理，则返回 true， 否则返回 false, false 走融云默认处理方式。
     */
    @Override
    public boolean onMessageLinkClick(Context context, String link, Message message) {
        return false;
    }

    /**
     * 当长按消息时执行。
     *
     * @param context 上下文。
     * @param view    触发点击的 View。
     * @param message 被长按的消息的实体信息。
     * @return 如果用户自己处理了长按后的逻辑处理，则返回 true，否则返回 false，false 走融云默认处理方式。
     */
    @Override
    public boolean onMessageLongClick(Context context, View view, Message message) {
        return false;
    }
}
